package com.test.demo.gui;

import com.test.demo.domain.Robot;
import com.test.demo.util.RobotSerialization;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;

import java.io.File;
import java.util.List;

public class CustomMenuBar extends MenuBar {

    public CustomMenuBar() {
        // 创建菜单栏
        super();

        Menu fileMenu = new Menu("文件");

        MenuItem newItem = new MenuItem("导入");
        newItem.setOnAction(e -> importFile());

        MenuItem openItem = new MenuItem("导出");
        openItem.setOnAction(e -> export());

        fileMenu.getItems().addAll(newItem, openItem);


        // 创建“编辑”菜单
        Menu editMenu = new Menu("帮助");

        // 创建“复制”菜单项
        MenuItem copyItem = new MenuItem("说明");
        StringBuilder sb = new StringBuilder();
        sb.append("游戏说明：").append("\n").append("\n")
                .append("角色类型：机器人、动物、植物").append("\n")
                .append("机器人 猎杀一切（建筑物、动物）").append("\n")
                .append("动物 相克顺序 老虎——狮子——狼——乌龟——蜜蜂").append("\n")
                .append("动物 相克顺序 金——木——土——水——火").append("\n")
                .append("动物 碰到机器人光圈会躲开，碰到机器人本身 会死亡").append("\n")
                .append("植物 只能被机器人 破坏，动物碰撞会移动").append("\n").append("\n")
                .append("操作说明：").append("\n")
                .append("点击添加机器人 可通过WSAD 上下左右移动").append("\n")
                .append("菜单栏 文件部分 可导出/导入 配置文件").append("\n")
        ;
        copyItem.setOnAction(e -> showAlert("说明", sb.toString()));

        // 将菜单项添加到“编辑”菜单
        editMenu.getItems().addAll(copyItem);

        // 将菜单添加到菜单栏
        getMenus().addAll(fileMenu, editMenu);
    }

    // 弹出提示框的辅助方法
    private void showAlert(String title, String content) {
        Alert alert = new Alert(AlertType.INFORMATION);
        alert.setTitle(title);
        alert.setHeaderText(null);
        alert.setContentText(content);
        alert.showAndWait();
    }

    private void export() {
        //选择文件夹
        // 创建 DirectoryChooser 实例
        DirectoryChooser directoryChooser = new DirectoryChooser();
        // 设置初始目录（可选）
        directoryChooser.setInitialDirectory(new File(System.getProperty("user.home")));
        // 显示文件夹选择对话框并获取用户选择的文件夹
        File selectedDirectory = directoryChooser.showDialog(CanvasGui.getInstance().getScene().getWindow());
        if (selectedDirectory != null) {
            List<Robot> robots = CanvasGui.getInstance().getRobots();
            RobotSerialization.serialize(robots, selectedDirectory.getAbsolutePath() + File.separator + "robots.ser");
            showAlert("导出", "导出成功");
        }
    }

    private void importFile() {

        // 创建 FileChooser 对象
        FileChooser fileChooser = new FileChooser();

        // 设置文件扩展名过滤器，只允许选择 .ser 文件
        FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("SER 文件 (*.ser)", "*.ser");
        fileChooser.getExtensionFilters().add(filter);

        // 打开文件选择对话框，限制只选择 .ser 文件
        File selectedFile = fileChooser.showOpenDialog(CanvasGui.getInstance().getScene().getWindow());

        if (selectedFile != null) {
            System.out.println("选择的文件: " + selectedFile.getAbsolutePath());
            List<Robot> deserialize = RobotSerialization.deserialize(selectedFile.getAbsolutePath());
            CanvasGui.getInstance().addRobots(deserialize);
            showAlert("导入", "导入成功");
        } else {
            System.out.println("没有选择文件");
        }


    }
}
